.TH std::chrono::operator+,std::chrono::operator-(std::chrono::weekday) 3 "2024.06.10" "http://cppreference.com" "C++ Standard Libary"
.SH NAME
std::chrono::operator+,std::chrono::operator-(std::chrono::weekday) \- std::chrono::operator+,std::chrono::operator-(std::chrono::weekday)

.SH Synopsis
   Defined in header <chrono>
   constexpr std::chrono::weekday operator+( const
   std::chrono::weekday& wd,                                          \fB(1)\fP \fI(since C++20)\fP
                                             const std::chrono::days&
   d ) noexcept;
   constexpr std::chrono::weekday operator+( const std::chrono::days&
   d,                                                                 \fB(2)\fP \fI(since C++20)\fP
                                             const
   std::chrono::weekday& wd ) noexcept;
   constexpr std::chrono::weekday operator-( const
   std::chrono::weekday& wd,                                          \fB(3)\fP \fI(since C++20)\fP
                                             const std::chrono::days&
   d ) noexcept;
   constexpr std::chrono::days operator-( const std::chrono::weekday&
   wd1,                                                               \fB(4)\fP \fI(since C++20)\fP
                                          const std::chrono::weekday&
   wd2 ) noexcept;

   1,2) Adds d.count() days to wd. The weekday value held in the result is computed by
   first evaluating static_cast<long long>(wd.c_encoding()) + d.count() and reducing it
   modulo 7 to an integer in the range [0, 6].
   3) Subtracts d.count() days from wd. Equivalent to return wd + -d;.
   4) If wd1.ok() and wd2.ok() are both true, returns a std::chrono::days value d such
   that d.count() is in the range [0, 6] and wd2 + d == wd1. Otherwise the returned
   value is unspecified.

.SH Return value

   1-3) A std::chrono::weekday holding a weekday value calculated as described above.
   4) A std::chrono::days representing the distance between wd1 and wd2.

.SH Notes

   As long as the computation doesn't overflow, (1-3) always return a valid weekday
   even if wd.ok() is false.

.SH Example


// Run this code

 #include <chrono>
 #include <iostream>

 int main()
 {
     std::cout << std::boolalpha;

     std::chrono::weekday wd{4};
     wd = wd + std::chrono::days(2);
     std::cout << (wd == std::chrono::weekday(6)) << ' '
               << (wd == std::chrono::Saturday) << ' ';

     wd = wd - std::chrono::days(3);
     std::cout << (wd == std::chrono::weekday(3)) << ' '
               << (wd == std::chrono::Wednesday) << ' ';

     wd = std::chrono::Tuesday;
     wd = wd + std::chrono::days{8}; // (((2 + 8) == 10) % 7) == 3;
     std::cout << (wd == std::chrono::Wednesday) << ' ';

     wd = wd + (std::chrono::Sunday - std::chrono::Thursday); // (3 + 3) == 6
     std::cout << (wd == std::chrono::Saturday) << '\\n';
 }

.SH Output:

 true true true true true true

.SH See also

   operator++
   operator++(int) increments or decrements the weekday
   operator--      \fI(public member function)\fP
   operator--(int)
   operator+=      adds or subtracts a number of days
   operator-=      \fI(public member function)\fP
